package com.ruoyi.point.service;

import java.util.List;
import com.ruoyi.point.domain.MallGoods;

/**
 * 积分商城商品Service接口
 * 
 * @author hy
 * @date 2025-08-12
 */
public interface IMallGoodsService 
{
    /**
     * 查询积分商城商品
     * 
     * @param id 积分商城商品主键
     * @return 积分商城商品
     */
    public MallGoods selectMallGoodsById(Integer id);

    /**
     * 查询积分商城商品列表
     * 
     * @param mallGoods 积分商城商品
     * @return 积分商城商品集合
     */
    public List<MallGoods> selectMallGoodsList(MallGoods mallGoods);

    /**
     * 新增积分商城商品
     * 
     * @param mallGoods 积分商城商品
     * @return 结果
     */
    public int insertMallGoods(MallGoods mallGoods);

    /**
     * 修改积分商城商品
     * 
     * @param mallGoods 积分商城商品
     * @return 结果
     */
    public int updateMallGoods(MallGoods mallGoods);

    /**
     * 批量删除积分商城商品
     * 
     * @param ids 需要删除的积分商城商品主键集合
     * @return 结果
     */
    public int deleteMallGoodsByIds(Integer[] ids);

    /**
     * 删除积分商城商品信息
     * 
     * @param id 积分商城商品主键
     * @return 结果
     */
    public int deleteMallGoodsById(Integer id);

    /**
     * 根据ID查询商品详情（多表联查，包含规格信息）
     * 
     * @param id 商品ID
     * @return 商品详情
     */
    public MallGoods selectMallGoodsDetailById(Integer id);

    /**
     * 查询商品列表（多表联查，支持分页和筛选）
     * 
     * @param mallGoods 查询条件
     * @return 商品列表
     */
    public List<MallGoods> selectMallGoodsListWithStats(MallGoods mallGoods);

    /**
     * 查询热门商品列表
     * 
     * @return 热门商品列表
     */
    public List<MallGoods> selectHotMallGoodsList();

    /**
     * 查询热门商品列表（按销量排序）
     * 
     * @param limit 限制数量
     * @return 热门商品列表
     */
    public List<MallGoods> selectHotMallGoodsListBySales(Integer limit);

    /**
     * 查询新品列表（按创建时间排序）
     * 
     * @param limit 限制数量
     * @return 新品列表
     */
    public List<MallGoods> selectNewMallGoodsListByTime(Integer limit);

    /**
     * 查询推荐商品列表
     * 
     * @return 推荐商品列表
     */
    public List<MallGoods> selectRecommendedMallGoodsList();

    /**
     * 更新商品库存和销量（兑换后）
     * 
     * @param goodsId 商品ID
     * @return 结果
     */
    public int updateGoodsStockAndSales(Integer goodsId);
}
